120 A$=INKEY$: IF A$="O" OR A$="o" THEN 130 ELSE 210
130 CLS: LOCATE 10,1: PRINT "PLEASE TYPE IN NEW PRINTER CODE FOR COMPRESSION. IF YOU HAVE AN I.B.M. OR EPSON PRINTER, THE CODE IS 'CTRL-O' SO JUST TYPE THAT AND THEN PRESS THE 'ENTER' KEY."
140 CMP$="":PRINT "NEW CODE FOR COMPRESSED PRINT ======> ";
150 X$=INKEY$: IF X$="" THEN 150 ELSE IF X$=CHR$(13) THEN 170
160 CMP$=CMP$+X$:BEEP:GOTO 150
170 CLS: LOCATE 10,1: PRINT "PLEASE TYPE IN NEW PRINTER CODE FOR ADVANCE TO NEXT PAGE. GENERALLY THIS CODE IS 'CTRL-L'.
180 NPG$="":PRINT "NEW CODE FOR NEXT PAGE =============> ";
190 X$=INKEY$: IF X$="" THEN 190 ELSE IF X$=CHR$(13) THEN 1000
200 NPG$=NPG$+X$:BEEP:GOTO 190
210 CMP$=CHR$(15):REM printer command for compression
215 DEF FN RN(X)=CVI(L$)
220 NPG$=CHR$(12):REM printer command for next page
1030 DIM U%(22):FOR I=0 TO 21:READ U%(I):NEXT:DATA&H8B55,&HB8EC,&H0600,&H07B7,&H768B,&H8A0C,&H8B2C,&HA76,&HC8A,&H768B,&H8A08,&H8B34,&H676,&H148A,&HCDFE,&HC9FE,&HCEFE,&HCAFE,&H10CD,&HCA5D,&H8,&H0
1050 F1=0:F2=1:F3=2: REM DEFAULT DATA ENTRY PARAMETERS
1060 DEF FNPN(S)=CVI(MID$(P$(0),S*2-1,2))
1070 DEF FNMFP(F)=CVI(MID$(P$(F),1,2))
1080 DEF FNNP(F)=CVI(MID$(P$(F),3,2))
1090 DEF FNL(Y)=7+(Y MOD 10)+(-10*(Y MOD 10 = 0))
1100 MF$="###################,.##"
1110 IF CHR$(SCREEN(2,27))<>"T" THEN CLS:COLOR 0,7:PRINT SPACE$(240):LOCATE 2,27:PRINT "The Omaha DataBase Program":LOCATE 1,1:PRINT"KEY";STRING$(78,"THEN");"CLOSE":LOCATE 2,1:PRINT "OPEN":LOCATE 2,80:PRINT "OPEN":LOCATE 3,1:PRINT "SCREEN";STRING$(78,"THEN");"LOAD": COLOR 7,0:
1360 FI$(F)=DR$(F)+":"+F$(F):QZ=4:IF F=0 THEN QZ=10:
1370 OPEN FI$(F) AS #F+1 LEN=LL(F):FIELD #F+1,QZ AS P$(F):FOR Y=1 TO TE(F)
1380 IF QZ>510 THEN FIELD #F+1,255 AS Q1$,255 AS Q2$,QZ-510 AS Q3$,BL(F,Y) AS X$(F,Y) ELSE IF QZ>255 THEN FIELD #F+1,255 AS Q1$,QZ-255 AS Q2$,BL(F,Y) AS X$(F,Y) ELSE IF QZ=<255 THEN FIELD #F+1,QZ AS Q1$,BL(F,Y) AS X$(F,Y)
1390 QZ=QZ+BL(F,Y):NEXT
1400 RETURN
1410 FI$=DR$+":REC":OPEN FI$ FOR INPUT AS #7
1420 FOR G=0 TO TF:IF EOF(7) THEN 1440
1430 INPUT #7,NR(G),DL(G):NEXT:
1440 CLOSE #7:FOR G=0 TO TF: IF NR(G)=0 THEN NR(G)=1:
3375 IF LEFT$(N$,1)="'" THEN FB(X)=-0.4: WI=WI+LEN(N$)-1:A$(X)=MID$(N$,2):GOTO 3440
3380 IF LEFT$(N$,1)="+" THEN FB(X)=ABS(VAL(N$))*-1:WI=WI+ABS(VAL(N$)):GOTO 3440
3390 FB(X)=VAL(N$): IF FB(X)<1 OR FB(X)>TE(FA(X)) THEN GOSUB 1330: GOTO 3330
3400 WI=WI+BL(FA(X),FB(X))+1: TY=T(FA(X),FB(X)): IF TY<>1 THEN WI=WI+2
3410 IF FA(X)=0 THEN 3440 ELSE IF FA(X)= PRIMARY THEN 3440 ELSE GOSUB 1210: LOCATE 21,3: PRINT "This element is from a sub-file and may have more than one records": LOCATE 22,3: PRINT "connected to the same master file record."
3420 LOCATE 23,3: INPUT "(1) USE 1ST LINKED RECORD OR (2) USE ALL LINKED RECS (1-2)==> ",N$
3430 FC(X)=VAL(N$)-1: IF FC(X)<0 OR FC(X)>1 THEN GOSUB 1330: GOTO 3390
3440 LOCATE 20,4: PRINT "WIDTH ==> "WI:NEXT
3450 TX=X-1:X=51:GOSUB 1250:FLAG=1:GOSUB 4760
3460 REM NOW WRITE FORMAT FILE TO DISK
3470 OPEN FF$ FOR OUTPUT AS 1
3480 PRINT #1,TITLE$: PRINT #1,PRIMARY: PRINT #1,WI:FOR X=1 TO TX: PRINT #1,FA(X):PRINT #1,FB(X):PRINT #1,FC(X):PRINT #1,A$(X):NEXT: CLOSE
3490 REM FORMAT FILE LOADED
3500 CLOSE:GOSUB 1210: LOCATE 23,3: PRINT "PRESS 'ESC' TO TERMINATE WHILE PRINTING" :LOCATE 21,3: INPUT "REPORT ON (P)RINTER, (S)CREEN, (D)ISK ";DIR$
3510 DIR=INSTR("psdPSD",DIR$): IF DIR=0 THEN GOSUB 1330:GOTO 3500
3520 IF DIR>3 THEN DIR=DIR-3
3530 IF DIR=1 THEN OFN$="LPT1:" ELSE IF DIR=2 THEN OFN$="SCRN:"
3540 MES$="":MES$="TYPE: (L)ABELS, (R)EPORT": IF DIR=3 THEN MES$=MES$+", (C)LONE"
3550 LOCATE 22,3: PRINT MES$;:INPUT " ";TYP$
3560 TYP=INSTR("LRClrc",TYP$):IF TYP=0 THEN 3540 ELSE IF TYP>3 THEN TYP=TYP-3
3570 RESET:ODR$="":IF DIR<>3 THEN 3640
3580 IF DIR=3 THEN GOSUB 1210: LOCATE 21,3: INPUT "DISK DRIVE FOR OUTPUT (A-H) ";ODR$
3590 IF INSTR("ABCDEFGHabcdefgh",ODR$)=0 THEN GOSUB 1330: GOTO 3580
3600 ODR$=ODR$+":":LOCATE 22,3: INPUT "OUTPUT FILE NAME 'XXXX.OUT' ",OFN$
3610 IF OFN$="" THEN GOSUB 1330: GOTO 3600
3620 OFN$=LEFT$(OFN$,8): IF INSTR(".",OFN$)<>0 THEN OFN$=MID$(OFN$,1,INSTR(".",OFN$)-1)
3630 OFN$=OFN$+".OUT":
3640 GOSUB 4760: GOSUB 1210: LOCATE 22,3: INPUT "Which field change to trigger sub-totals ";A$
3650 YS=VAL(A$): IF YS>TX THEN BEEP: GOTO 3640: REM YS IS SUBTOTAL ELEMENT
3660 GOSUB 4760:GOSUB 1210: LOCATE 22,3: INPUT "List (A)ll records or (S)elected records only ";A$
3670 A$=LEFT$(A$,1):IF A$="S" OR A$="s" THEN GOSUB 5180:GOTO 3690
3680 IF A$<>"A" AND A$<>"a" THEN GOSUB 1330: GOTO 3660
3690 GOSUB 1410:IF DIR=3 THEN OPEN ODR$+OFN$ FOR OUTPUT AS 7 ELSE OPEN OFN$ FOR OUTPUT AS 7
3700 IF DIR=2 THEN TIMER OFF: CLS
3710 IF DIR=1 THEN GOSUB 1210: LOCATE 21,3: BEEP: PRINT "TURN ON YOUR PRINTER"
3730 OPEN IND$ AS #8 LEN=4: FIELD #8,2 AS L$,2 AS H$
3750 GET #8,1: IF FNRN(1)=0 THEN INDEX=0: GOTO 3780
3760 INDEX =1:GOTO 3780: REM THERE IS AN INDEX FILE, DO NOT USE PHYSICAL ORDER
3770 RESUME 3780
3780 ON ERROR GOTO 0
3790 FOR F=0 TO TF: GOSUB 1360: NEXT:REM OPEN FILES
3800 GOSUB 4960: GOSUB 4900
3810 FOR Y=1 TO TX:FR(FA(Y))=1:NEXT: REM FILES TO BE READ IN
3820 FOR X=1 TO 99999
3825 FOR Y=1 TO TX: IF FB(Y)>0 THEN LSET X$(FA(Y),FB(Y))=" "
3826 NEXT
3830 IF INDEX=1 THEN GET #8,X: RN=FNRN(X) ELSE RN=X
3840 IF RN=0 THEN 4300
3850 IF LL MOD 55 = 0 THEN GOSUB 4900
3860 XM=RN: IF PRIMARY=0 THEN GET #1,XM ELSE GET #PRIMARY +1,XM: XM=FNMFP(PRIMARY): IF XM=0 THEN 4290 ELSE GET #1,XM
3870 FOR Y=1 TO TX: IF FR(FA(Y))=1 AND FA(Y)<>PRIMARY AND FA(Y)<>0 THEN NQ=FNPN(FA(Y)): IF NQ<>0 THEN GET #FA(Y)+1,NQ:R(Y)=NQ
3875 IF FR(FA(Y))=1 AND FA(Y)<>PRIMARY AND FA(Y)=0 THEN NQ= FNMFP(PRIMARY): IF NQ<>0 THEN GET #FA(Y)+1,NQ:R(Y)=NQ
3880 NEXT: REM NOW ALL FILES READ IN
3890 IF ASC(LEFT$(X$(PRIMARY,1),1))=0 OR LEFT$(X$(PRIMARY,1),2)=" " THEN GOTO 4260
3900 IF LEFT$(P$(PRIMARY),2)=D$ THEN 4260: REM DELETED RECORD
3910 REM CLONE notice: CLONE DOES NOT CHECK FOR LINKED RECORD IN SUB-FILES
3920 IF TYP<>3 THEN 4010
3930 IF SELECT=1 THEN GOSUB 5420: IF TFV=0 THEN 4260
3935 YM=XM: IF FA(1)<> PRIMARY THEN YM=FN MFP(FA(1))
3937 PRINT #7,MKI$(YM);MKI$(0);
3940 FOR Y=1 TO TX:YM=XM:IF FA(Y)<>PRIMARY THEN YM=FN MFP(FA(Y))
3950 IF FB(Y)=-0.1 THEN PRINT #7,USING "#####";YM;:GOTO 3990
3960 IF FB(Y)=-0.2 THEN PRINT #7,USING "#####";X;:GOTO 3990
3962 IF FB(Y)=-0.3 THEN PRINT #7," ":GOTO 3990
3965 IF FB(Y)=-0.4 THEN PRINT #7,A$(Y);:GOTO 3990
3970 IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y)),32);: GOTO 3990
3980 PRINT #7,X$(FA(Y),FB(Y));:
3990 NEXT Y:GOTO 4260: REM NEXT X
4000 REM NOW PRINT OUT RECORD XM
4010 IF SUBTOTAL=1 THEN GOSUB 5070: REM print subtotals
4015 NNR=0:PTFV=0:IF SELECT=1 THEN GOSUB 5420:NPRINT=0: PTFV=TFV:IF TFV=0 THEN NPRINT=1:GOTO 4030: REM PRIMARY DOES NOT FIT SELECTION CHECK OTHER SUB-FILES BEFORE GOING ON TO NEXT RECORD ... PTFV IS TFV OF PRIMARY
4020 GOSUB 5730
4030 FOR Y=1 TO TX: IF FC(Y)=1 AND NNR=0 THEN NNR=FN NP(FA(Y))
4040 NEXT
4050 REM NOW CHECK IF OTHER LATERAL RECORDS IN SUB-FILE
4060 IF NNR=0 THEN 4230: REM NO LINKS TO SUB-FILE
4070 FOR Y=1 TO 5:NQ(Y)=0:NEXT Y: FOR Y=1 TO TX: NQ=0:IF FR(FA(Y))=1 AND FA(Y)<>0 AND FA(Y)<>PRIMARY AND FC(Y)=1 AND NQ(FA(Y))=0 THEN NQ=FNNP(FA(Y)):NQ(FA(Y))=NQ:R(Y)=NQ:IF NQ<>0 THEN GET #FA(Y)+1,NQ:IF FA(Y-1)=FA(Y) AND FB(Y-1)=-0.1 THEN R(Y-1)=NQ
4075 IF NQ=0 THEN R(Y)=0: IF FA(Y-1)=FA(Y) AND FB (Y-1)<0 THEN R(Y-1)=0:REM DON'T PRINT # OF NON-LINKED RECORD
4080 NEXT: REM READ IN ALL FILES AGAIN
4090 IF SELECT=1 THEN GOSUB 5900: IF TFV=0 THEN 4190
4100 IF NPRINT=1 THEN NPRINT=0: GOSUB 5730: GOTO 4190:REM PRIMARY WAS NOT PRINTED
4110 NF=0:FOR Y=1 TO TX: IF FC(Y)=1 THEN 4170
4120 IF FB(Y)=-0.1 AND FA(Y)=PRIMARY OR FB(Y)=-0.2 AND FA(Y)=PRIMARY THEN PRINT #7,STRING$(7,32);:GOTO 4180
4121 IF FB(Y)= -0.1 AND R(Y)=0 OR FB(Y)=-2 AND R(Y)=0 THEN PRINT #7,STRING$(7,32);:GOTO 4180
4122 IF FB(Y)= -0.1 THEN PRINT #7,USING "#####";R(Y);: PRINT #7,". ";:GOTO 4180
4123 IF FB(Y)= -0.2 THEN PRINT #7,USING "#####";R(Y);: PRINT #7,". ";:GOTO 4180
4130 IF FB(Y)=-0.3 THEN PRINT #7," ":LL=LL+1:GOTO 4180
4135 IF FB(Y)=-0.4 THEN PRINT #7,A$(Y);:GOTO 4180
4140 IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y))+1,32);: GOTO 4180
4145 IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 4180
4146 IF T(FA(Y),FB(Y))=4 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+2,32);" ";:GOTO 4180
4147 IF R(Y)=0 THEN PRINT #7,STRING$(LEN(X$(FA(Y),FB(Y)))+1,32);:GOTO 4180
4160 IF SELECT=1 THEN GOSUB 5420: IF TFV=0 THEN 4190
4170 IF T(FA(Y),FB(Y))=3 AND VAL(X$(FA(Y),FB(Y)))<>0 THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,2);"/";MID$(X$(FA(Y),FB(Y)),3,2);"/";MID$(X$(FA(Y),FB(Y)),5,2);" ";:GOTO 4180 ELSE IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 4180
4171 IF T(FA(Y),FB(Y))=4 THEN PRINT #7,USING RIGHT$(MF$,BL(FA(Y),FB(Y))+2);VAL(X$(FA(Y),FB(Y)));:PRINT #7," ";:GOTO 4180
4177 IF R(Y)=0 THEN PRINT #7,STRING$(LEN(X$(FA(Y),FB(Y)))+1,32);:GOTO 4180
4178 PRINT #7,X$(FA(Y),FB(Y));" ";:
4180 NEXT Y: PRINT #7," ":LL=LL+1:
4190 IF LL=>PL AND DIR<>2 AND TYP=2 THEN LPRINT NPG$:GOSUB 4900
4200 NNR=0: FOR Y=1 TO TX:IF FC(Y)=1 AND NNR=0 THEN NNR=FN NP(FA(Y))
4210 NEXT
4220 IF NNR=0 THEN 4230 ELSE GOTO 4070 REM NO MORE FURTHER POINTERS
4230 IF DIR<>2 THEN 4260 ELSE IF CSRLIN<20 THEN 4260
4240 LOCATE 23,1:PRINT "Hit any key to continue "
4250 A$=INKEY$: IF A$="" THEN 4250 ELSE CLS: GOSUB 4900
4260 IF DIR<>2 AND LL=>PL AND TYP=2 THEN LPRINT NPG$:GOSUB 4900
4275 IF X=>NR(PRIMARY) THEN 4300
4280 A$=INKEY$: IF A$=CHR$(27) THEN RUN
4290 NEXT X: REM READ NEXT RECORD
4300 IF DIR=2 THEN LOCATE 23,1:PRINT "Hit any key to continue ":A$=INKEY$: IF A$="" THEN 4300
4310 GOSUB 5130
4320 CLOSE: RUN "MENU
4330 GOTO 4330
4340 REM DISPLAY
4350 FLAG=0:E1=1:E2=0:GOSUB 1200:IF F=F1 THEN E1=F2
4390 COLOR 7,0:LOCATE 4,5:PRINT "RECORD==> ";:LOCATE 4,16:PRINT X
4400 IF LEFT$(P$(F),2)=D$ THEN COLOR 31:LOCATE 5,5:PRINT "DELETED RECORD":COLOR 7,0:LOCATE 6,5:PRINT "LINK":LOCATE 6,16:PRINT " * ";CVI(MID$(P$(F),3)):GOTO 4500
4410 IF F<>0 THEN COLOR 7,0:LOCATE 5,5:PRINT "MASTER";:LOCATE 5,16:PRINT FNMFP(F):LOCATE 5,30:PRINT LEFT$(X$(0,1)+X$(0,2)+STRING$(50,32),49): LOCATE 6,5: PRINT "LINK";:LOCATE 6,16:PRINT FNNP(F)
4420 IF F<>0 THEN 4440 ELSE P=1:COLOR 7,0:LOCATE 5,5:COLOR 9,0:PRINT "POINTERS:":LOCATE 5,16:PRINT "1 2 3 4 5":COLOR 7,0: LOCATE 6,6:
4430 WHILE P<=TF:PRINT MID$(" "+STR$(FNPN(P))+" ",1,11);:P=P+1:WEND
4440 FOR Y2=E1 TO E2:
4450 COLOR 7,0:LOCATE 8+Y2-E1,1:PRINT LEFT$(STR$(Y2)+". "+T$(F,Y2)+" ",15);" ";:COLOR 0,7
4460 IF T(F,Y2)=1 OR T(F,Y2)=2 THEN PRINT X$(F,Y2):GOTO 4490
4470 IF T(F,Y2)=3 AND LEN(X$(F,Y2))>2 THEN PRINT MID$(X$(F,Y2),1,2);"/";MID$(X$(F,Y2),3,2);"/";MID$(X$(F,Y2),5,2):GOTO 4490 ELSE IF T(F,Y2)=3 THEN PRINT X$(F,Y2):GOTO 4490
4480 IF T(F,Y2)=4 THEN PRINT USING RIGHT$(MF$,BL(F,Y2)+2);VAL(X$(F,Y2))
4490 NEXT Y2:COLOR 7,0:
4500 RETURN
4510 REM EXIT
4520 RESET:RUN "MENU
4530 COLOR 9:PRINT "F10":COLOR 7,0:PRINT " Return to Menu"
4550 LOCATE 7,1: COLOR 9:PRINT "# TITLE TYPE BEGINNING LENGTH":COLOR 15
4560 E1=1:GOTO 4570
4570 IF E1+9>TE(F) THEN E2=TE(F) ELSE E2=E1+9
4580 FOR Y=E1 TO E2
4590 LOCATE 7+(Y MOD 10)+(-10*(Y MOD 10 = 0)),1:PRINT Y". ";LEFT$(T$(F,Y)+" ",24);
4600 LOCATE ,22:IF T(F,Y)=1 THEN PRINT "ALPHA "; ELSE IF T(F,Y)=2 THEN PRINT "NUMBER"; ELSE IF T(F,Y)=3 THEN PRINT "DATE "; ELSE IF T(F,Y)=4 THEN PRINT "$$$.$$"; ELSE PRINT " ";
4610 PRINT " ";BB(F,Y);" ";BL(F,Y):NEXT:COLOR 7,0
4620 GOSUB 1210: IF E2<TE(F) THEN LOCATE 22,3: INPUT "Press the 'ENTER' key to continue ";AN$: E1=E2+1:COLOR 15:GOTO 4570
4630 RETURN
4640 REM
4650 LOCATE 6,20:COLOR 15: PRINT "You have these files:": FOR F=0 TO TF: LOCATE ,20:PRINT F". ";F$(F):NEXT:COLOR 7,0
4800 IF FB(X)=-0.1 THEN LOCATE R,15:PRINT "* PHYSICAL RECORD #":GOTO 4860
4810 IF FB(X)=-0.2 THEN LOCATE R,15:PRINT "* SORTED RECORD #":GOTO 4860
4820 IF FB(X)=-0.3 THEN LOCATE R,15:PRINT "* NEW LINE":GOTO 4860
4825 IF FB(X)=-0.4 THEN LOCATE R,15:PRINT "* ";CHR$(34);A$(X);CHR$(34):GOTO 4860
4830 IF FB(X)<0 THEN LOCATE R,15:PRINT "* ADD ";ABS(FB(X));" SPACES":GOTO 4860
4840 LOCATE R,15:PRINT T$(FA(X),FB(X));:
4850 IF FA(X)=0 THEN 4860 ELSE IF FC(X)=0 THEN LOCATE R,50: PRINT "FIRST LINKED REC. ONLY"; ELSE IF FC(X)=1 THEN LOCATE R,50:PRINT "ALL LINKED RECORDS";
4860 IF ((X+1) MOD 13)=0 THEN GOSUB 1210:LOCATE 22,3: INPUT "PRESS 'ENTER' KEY TO CONTINUE ",A$: GOSUB 1230
4870 NEXT
4880 IF FLAG=1 THEN FLAG=0:GOSUB 1210: LOCATE 22,3: INPUT "OKAY TO PROCEED (Y/N) ";A$: A$=LEFT$(A$,1): IF A$="N" OR A$="n" THEN RETURN 3190 ELSE RETURN
4890 RETURN
4900 REM HEADER
4910 IF TYP<>2 OR DIR<>1 THEN RETURN
4915 IF P<>0 THEN LPRINT NPG$
4920 P=P+1:IF WI>80 AND DIR=1 THEN LPRINT CMP$:WIDTH #7,132
5490 IF C(1,C)=3 AND VALUE<>0 AND VALUE=VAL(C$(C)) THEN C(3,C)=-1:GOTO 5560
5500 IF C(1,C)=3 AND V$=C$(C) THEN C(3,C)=-1: GOTO 5560
5510 IF C(1,C)=4 AND VALUE<>0 AND VALUE<>VAL(C$(C)) THEN C(3,C)=-1:GOTO 5560
5520 IF C(1,C)=4 AND VALUE=0 AND V$<>C$(C) THEN C(3,C)=-1: GOTO 5560
5530 REM ARITHMATIC COMPARISON
5540 IF C(1,C)=1 AND VALUE>VAL(C$(C)) THEN C(3,C)=-1
5550 IF C(1,C)=2 AND VALUE <VAL(C$(C)) THEN C(3,C)=-1
5560 NEXT
5570 REM NOW CHECK FOR "ORS"
5580 FOR C=1 TO TC: IF C(2,C)<>2 THEN ORFLAG=0:GOTO 5640
5590 IF C(3,C) OR C(3,C+1) THEN C(3,C)=-1: C(3,C+1)=-1:ORFLAG=-1
5600 IF C=1 OR ORFLAG=0 THEN 5640
5610 REM NOW CHECK BACKWARDS
5620 FOR C1=C TO 1 STEP -1: IF C(2,C1)=2 AND ORFLAG=-1 THEN C(3,C1)=-1:ELSE C1=0: GOTO 5640
5630 NEXT C1
5640 NEXT C
5650 REM NOW ALL ORS ARE -1 IF NEIGHBORING ORS ARE TRUE
5660 REM NOW CHECK FOR "ANDS"
5670 FOR C=1 TO TC: IF C(2,C)=1 THEN ANDFLAG=1:
5680 NEXT
5690 IF ORFLAG=0 AND ANDFLAG=0 THEN ANDFLAG=1
5700 SUM=0: FOR C=1 TO TC: SUM=SUM+C(3,C): NEXT
5710 TFV=0:IF ANDFLAG=0 AND SUM <>0 THEN TFV=-1:RETURN ELSE IF ANDFLAG=0 THEN RETURN:REM NO "ORS" ARE TRUE
5720 TFV=0: IF ANDFLAG=1 AND SUM=TC*-1 THEN TFV=-1:RETURN ELSE IF ANDFLAG=1 THEN RETURN: REM IF AND ALL SHOULD BE TRUE
5730 REM SUBROUTINE TO PRINT OUT FULL LINE
5740 FOR Y=1 TO TX:YM=XM
5750 IF FA(Y)<>PRIMARY AND FA(Y)<>0 THEN YM=FNPN(FA(Y)):IF YM=0 AND FB(Y)=-0.1 OR YM=0 AND FB(Y)=-2 THEN PRINT #7,STRING$(8,32);:GOTO 5840 ELSE IF YM=0 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+1,32);:GOTO 5840
5752 IF FA(Y)<>PRIMARY AND FA(Y)=0 THEN YM=FNMFP(PRIMARY):IF YM=0 THEN PRINT #7,STRING$(BL(FA(Y),FB(Y))+1,32);:GOTO 5840
5780 IF Y=YS AND X$(FA(Y),FB(Y))<>Y$ THEN SUBTOTAL=1: Y$=X$(FA(Y),FB(Y))
5790 IF FB(Y)= -0.1 THEN PRINT #7,USING "#####";YM;: PRINT #7,". ";:GOTO 5840
5800 IF FB(Y)= -0.2 THEN PRINT #7,USING "#####";X;: PRINT #7,". ";:GOTO 5840
5810 IF FB(Y)= -0.3 THEN PRINT #7," ":LL=LL+1:GOTO 5840
5815 IF FB(Y)= -0.4 THEN PRINT #7,A$(Y);:GOTO 5840
5820 IF FB(Y)<0 THEN PRINT #7,STRING$(ABS(FB(Y))+1,32);:GOTO 5840
5825 IF T(FA(Y),FB(Y))=3 AND VAL(X$(FA(Y),FB(Y)))<>0 THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,2);"/";MID$(X$(FA(Y),FB(Y)),3,2);"/";MID$(X$(FA(Y),FB(Y)),5,2);" ";:GOTO 5840 ELSE IF T(FA(Y),FB(Y))=3 THEN PRINT #7,STRING$(9,32);:GOTO 5840
5826 IF T(FA(Y),FB(Y))=4 THEN PRINT #7,USING RIGHT$(MF$,BL(FA(Y),FB(Y))+2);VAL(X$(FA(Y),FB(Y)));:PRINT #7," ";:GOTO 5840
5830 IF TYP<> 1 THEN PRINT #7, X$(FA(Y),FB(Y));" ";:GOTO 5840
5832 FOR GG=1 TO LEN (X$(FA(Y),FB(Y)))::SP =INSTR(GG,X$(FA(Y),FB(Y)),CHR$(32)):IF SP=0 THEN PRINT #7, X$(FA(Y),FB(Y));" ";:GG=99:GOTO 5840
5833 IF SP=1 THEN GG=99:GOTO 5840
5834 IF MID$(X$(FA(Y),FB(Y)),SP)=MID$(" ",1,LEN(X$(FA(Y),FB(Y)))-SP+1) THEN PRINT #7,MID$(X$(FA(Y),FB(Y)),1,SP-1);" ";:GG=99:GOTO 5840 ELSE GG=SP
5836 NEXT GG:
5840 NEXT Y: PRINT #7," ":LL=LL+1
5850 RETURN
5900 REM BEFORE GOING TO SELECTION CHECK TO SEE IF SUB-FILE IS IN SELECTION CRITERION
5905 REM C(0,C) IS ELEMENT, CHECK IF ELEMENT FC(Y) IS 1 WHICH MEANS IT IS A LINKED RECORD TO BE PRINTED
5910 TFV=0:FOR C=1 TO TC: IF FC(C(0,C))<>1 OR X$(FA(C(0,C)),FB(C(0,C)))=STRING$(LEN(X$(FA(C(0,C)),FB(C(0,C)))),32) THEN NEXT C: TFV=PTFV:RETURN
5920 C=TC+1
5990 GOSUB 5420: RETURN: REM GOTO SELECTION
30000 OLDROW=CSRLIN:OLDCOL=POS(0):OPEN "ERROR" AS #7 LEN=176:FIELD #7,35 AS ER$(1),70 AS ER$(2),70 AS ER$(3):GET#7,ERR
30010 LOCATE 20,3:PRINT LEFT$(ER$(1),INSTR(ER$(1)," ")+(-40*INSTR(ER$(1)," ")=0));" IN LINE ";ERL;" (Press any key)":LOCATE 21,3:PRINT ER$(2):LOCATE 22,3:PRINT ER$(3):PLAY"MB":J9=2:FOR I9=1 TO 9:PLAY"L64T255O=J9;CC#DD#EFF#GG#AA#B":NEXT
30020 AE$=INKEY$:IF AE$=""THEN 30020 ELSE FOR EL=20 TO 22:LOCATE EL,3:PRINT STRING$(76,32);:NEXT:LOCATE OLDROW,OLDCOL:CLOSE#3:RESUME
40000 REM **********************************************************
40010 REM **********************************************************
40020 REM ** COPYRIGHT (C) 1984, 1988 GERALD E. GONDERINGER **
40030 REM ** The Omaha DataBase Program **
40040 REM ** $50.00 REGISTRATION FEE FOR USE OF PROGRAM **
40050 REM **********************************************************
40060 REM **********************************************************